﻿using System;
namespace Xroad.Eu.Xsd.Identifiers {
    
    
    [System.SerializableAttribute()]
    public partial class XRoadServiceIdentifierType {
        
        private global::Xroad.Eu.Xsd.Identifiers.XRoadObjectType @__objectType = new global::Xroad.Eu.Xsd.Identifiers.XRoadObjectType("SERVICE");
        
        private string @__xRoadInstance;
        
        private string @__memberClass;
        
        private string @__memberCode;
        
        private string @__subsystemCode;
        
        private string @__serviceCode;
        
        private string @__serviceVersion;
        
        public XRoadServiceIdentifierType() {
        }
        
        /// <summary>
        /// All parameters
        /// </summary>
        public XRoadServiceIdentifierType(global::Xroad.Eu.Xsd.Identifiers.XRoadObjectType @objectType, string @xRoadInstance, string @memberClass, string @memberCode, string @subsystemCode, string @serviceCode, string @serviceVersion) {
            this.@__objectType = @objectType;
            this.@__xRoadInstance = @xRoadInstance;
            this.@__memberClass = @memberClass;
            this.@__memberCode = @memberCode;
            this.@__subsystemCode = @subsystemCode;
            this.@__serviceCode = @serviceCode;
            this.@__serviceVersion = @serviceVersion;
        }
        
        /// <summary>
        /// Required parameters
        /// </summary>
        public XRoadServiceIdentifierType(global::Xroad.Eu.Xsd.Identifiers.XRoadObjectType @objectType, string @xRoadInstance, string @memberClass, string @memberCode, string @serviceCode) {
            this.@__objectType = @objectType;
            this.@__xRoadInstance = @xRoadInstance;
            this.@__memberClass = @memberClass;
            this.@__memberCode = @memberCode;
            this.@__serviceCode = @serviceCode;
        }
        
        /// <summary>
        /// Copy Constructor
        /// </summary>
        protected XRoadServiceIdentifierType(XRoadServiceIdentifierType @xRoadServiceIdentifierType) {
            this.@__objectType = @xRoadServiceIdentifierType.ObjectType;
            this.@__xRoadInstance = @xRoadServiceIdentifierType.XRoadInstance;
            this.@__memberClass = @xRoadServiceIdentifierType.MemberClass;
            this.@__memberCode = @xRoadServiceIdentifierType.MemberCode;
            this.@__subsystemCode = @xRoadServiceIdentifierType.SubsystemCode;
            this.@__serviceCode = @xRoadServiceIdentifierType.ServiceCode;
            this.@__serviceVersion = @xRoadServiceIdentifierType.ServiceVersion;
        }
        
        public virtual global::Xroad.Eu.Xsd.Identifiers.XRoadObjectType ObjectType {
            get {
                return this.@__objectType;
            }
            set {
                this.@__objectType = value;
            }
        }
        
        public virtual string XRoadInstance {
            get {
                return this.@__xRoadInstance;
            }
            set {
                this.@__xRoadInstance = value;
            }
        }
        
        public virtual string MemberClass {
            get {
                return this.@__memberClass;
            }
            set {
                this.@__memberClass = value;
            }
        }
        
        public virtual string MemberCode {
            get {
                return this.@__memberCode;
            }
            set {
                this.@__memberCode = value;
            }
        }
        
        public virtual string SubsystemCode {
            get {
                return this.@__subsystemCode;
            }
            set {
                this.@__subsystemCode = value;
            }
        }
        
        public virtual string ServiceCode {
            get {
                return this.@__serviceCode;
            }
            set {
                this.@__serviceCode = value;
            }
        }
        
        public virtual string ServiceVersion {
            get {
                return this.@__serviceVersion;
            }
            set {
                this.@__serviceVersion = value;
            }
        }
    }
}
